﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Xml.Serialization;
//using Framework.DataObjects;
//using Framework.Interface;

//namespace Framework
//{
//    /// <summary>
//    /// Name/Value data object, The value part serializes as an XML Text value
//    /// </summary>
//    [Serializable]
//    public class FileSourceNameTextValueDo : NameTextValueDo
//    {
//        [XmlIgnore]
//        private bool IsValueLoaded { get; set; }

//        #region C'tor
//        public FileSourceNameTextValueDo()
//        {
//            _.P("Ctor1");
//            IsValueLoaded = false;
//        }

//        public FileSourceNameTextValueDo(string name, string value)
//        {
//            _.P("Ctor2");
//            Name = name;
//            Value = value;
//            IsValueLoaded = false;
//        }
//        #endregion

//        [XmlAttribute("File")]
//        public string FileName { get; set; }

//        private string _value;

//        [XmlText]
//        public new string Value
//        {
//            get
//            {
//                _.P("GetIt");
//                if (!IsValueLoaded)
//                {
//                    SetValueFromFile();
//                }
                
//                return _value;
//            }
//            set
//            {
//                _.P("SetIt");
//                SetValue(value);
//            }
//        }

//        private void SetValueFromFile()
//        {
//            _.P("SetValueFromFile");
//            if (IsValidFile())
//            {
//                _.P("Read");
//                _.P(FileName);
//                var value = FileUtil.Read(FileName);

//                SetValue(value);
//            }
//            else
//            {
//                IsValueLoaded = true;
//            }
//        }
//        private void SetValue(string value)
//        {
//            _.P("SetValue");
//            IsValueLoaded = true;

//            _value = value;
//        }

//        private bool IsValidFile()
//        {
//            _.P("IsValid");
//            return FileUtil.Exists(FileName);
//        }

//        public FileSourceNameTextValueDo ShallowCopy()
//        {
//            _.P("Shallow");
//            return (FileSourceNameTextValueDo)MemberwiseClone();
//        }
//    }
//}
